import { defineStore } from 'pinia'
// 引入接口
import { reqCategory, reqVideoList, reqGlance, reqSale, reqTime, reqLodtop, reqToplod } from '../../api/course/index'

export const useCourseStore = defineStore('course', {
    state: () => ({
        // 分类
        categoryData: [],
        // 存储综合排序的数据
        videoList: {},
        // 存储视频数组元素长度
        videoLength: 0,
        // 存储视频总元素
        totalVideoLe: 0,
        // pageNum--第一次请求的视频数据
        Content0: [],
        // pageNum非0的时候的视频数据
        ContenF: []
    }),
    // Actions 相当于组件中的methods,与 getters一样操作可以通过this访问并提供完整类型（和自动完成✨）支持。 与它们不同，actions 可以是异步的
    actions: {
        async getCategory() {
            try {
                let result = await reqCategory()
                // console.log(result)
                this.categoryData = result.data
                // console.log(categoryData.value)
            } catch (error) {

            }
        },
        // 请求视频的数据
        async getVideoList(pageSize, pageNum, filter) {
           this.videoList = {}
            let result = await reqVideoList(pageSize, pageNum, filter)
            // console.log(result) 
            this.videoList = result.data.content
            this.videoLength = result.data.content.length
            this.totalVideoLe = result.data.content.totalElements

            //  存储pageNum为0的视频数据
            if (pageNum == 0) {
                this.Content0 = result.content
                return
            }
            // // 非0时候的视频数据
            this.ContenF = result.content
        },
        //浏览量
        async getGlance(pageSize, pageNum) {
            const result = await reqGlance(pageSize, pageNum)
            //  存储视频数据
            //  存储pageNum为0的视频数据
            if (pageNum == 0) {
                this.Content0 = result.content
                return
            }
            // 非0时候的视频数据
            this.ContenF = result.content
        },
        // 销售量
        async getSale(pageSize, pageNum) {
            const result = await reqSale(pageSize, pageNum)
            //  存储视频数据
            //  存储pageNum为0的视频数据
            if (pageNum == 0) {
                this.Content0 = result.content
                return
            }
            // 非0时候的视频数据
            this.ContenF = result.content
        },
        // 发布时间
        async getTime(pageSize, pageNum) {
            const result = await reqTime(pageSize, pageNum)
            //  存储视频数据
            //  存储pageNum为0的视频数据
            if (pageNum == 0) {
                this.Content0 = result.content
                return
            }
            // 非0时候的视频数据
            this.ContenF = result.content
        },
        // 价格从高到低
        async getTop_lod(pageSize, pageNum) {
            const result = await reqToplod(pageSize, pageNum)
            //  存储视频数据
            //  存储pageNum为0的视频数据
            if (pageNum == 0) {
                this.Content0 = result.content
                return
            }
            // 非0时候的视频数据
            this.ContenF = result.content
        },
        // 价格从低到高
        async getLod_top(pageSize, pageNum) {
            const result = await reqLodtop(pageSize, pageNum)
            //  存储视频数据
            //  存储pageNum为0的视频数据
            if (pageNum == 0) {
                this.Content0 = result.content
                return
            }
            // 非0时候的视频数据
            this.ContenF = result.content
        }

    },
    // getter完全等同于 Store状态的计算值  大多数时候，getter 只会依赖状态
    // 定义常规函数时通过 this 访问到 整个 store 的实例
    // doubleCount: (state) => state.counter * 2,
    getters: {

    }
})